package com.qf.controller;


import com.qf.pojo.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * @RequestMapping: 可以标记在类或者方法上， 映射前端路径
 *  标记在类上，请求方法时 都需要添加此路径
 *  标记在方法上，请求方法时 需要添加此路径
 * 后端控制器
 *
 *
 * 转发：服务器内部的调整，不能跳转到其他服务器
 *      请求路径不会发送改变， 保留请求体中的数据
 * 重定向： 可以跳转到其他服务器
 *      请求理解不会发生改变 不会保留请求体中的数据
 *
 * 如果添加 redirect |forward 前缀，视图解析器的前缀和后缀不生效
 * WEB-INF下的资源 必须是 请求转发才能访问，重定向不可以访问
 *
 *
 *
 *
 * @version v1.0.0
 * @Description:
 * @author: 姜红凯
 * @date: 2022.02.11
 * @since 1.0
 */
@Controller
@RequestMapping("/test")
@SessionAttributes(names = {"a","user"})
public class TestController {

    @RequestMapping("/hello")
    public String test(){
        return "redirect:/hello.jsp";
    }

    @RequestMapping("/getData01")
    public String getData01(HttpServletRequest request ,
                            HttpSession session,
                            HttpServletResponse response){
        request.setAttribute("a", "Hello");
        session.setAttribute("b" , "hello-session");

        return "redirect:/hello.jsp";
    }

    @RequestMapping("/getData02")
    public String getData02(Model model){
        model.addAttribute("a", "Hello");
        User user = new User();
        user.setId(1);
        user.setUsername("张三");
        user.setPassword("1234");

        model.addAttribute("user",user);
        return "forward:/hello.jsp";
    }

    @RequestMapping("/getData03")
    public String getData03(ModelMap model){
        model.addAttribute("a", "Hello");
        User user = new User();
        user.setId(1);
        user.setUsername("张三");
        user.setPassword("1234");

        model.addAttribute("user",user);
        return "forward:/hello.jsp";
    }

    @RequestMapping("/getData04")
    public ModelAndView getData04(){
        //模型和视图对象
        ModelAndView mav = new ModelAndView();
        //在请求域中添加数据
        mav.addObject("a", "Hello");
        User user = new User();
        user.setId(1);
        user.setUsername("张三");
        user.setPassword("1234");

        mav.addObject("user",user);
        //指定跳转的页面
        mav.setViewName("forward:/hello.jsp");

        return mav;

    }

    @RequestMapping("/getData05")
    public String getData05(Model model){
        model.addAttribute("a", "Hello");
        User user = new User();
        user.setId(1);
        user.setUsername("张三");
        user.setPassword("1234");

        model.addAttribute("user",user);
        return "redirect:/hello.jsp";
    }
}
